﻿<?php
/* Classe usaData.
 * Autor: Ricardo de Castro Oliveira
 * Data de criação: 23/08/2011
 * Modificado em: 08/12/2011
 * Descrição: Executa trabalhos diversos com datas, como conversão, adição e subtração de dias etc...
*/
class usaData{
	private $ano1;
	private $mes1;
	private $dia1;
	private $ano2;
	private $mes2;
	private $dia2;
	private $timestamp1;
	private $timestamp2;
	
	//Muda o formato da data, do formato brasileiro dd/mm/aaaa para o inglês aaaa-mm-dd e vice-versa.
	function converterData($dataUso){
		$separadorAtual= (strripos($dataUso, "/")) ? "/" : "-";
		$separe=($separadorAtual=="/") ? "-" : "/";
		$divideData=array_reverse(explode($separadorAtual, $dataUso));
		$data_convertida=implode($separe, $divideData);
		return $data_convertida;
	}
	
	//Divide as datas no formato brasileiro, e salva em variaveis.
	function usarDatas($data1, $data2){
		$dm=explode("/", $data1);
		$dp=explode("/", $data2);
		$this->ano1 = $dm[2];
		$this->mes1 = $dm[1];
		$this->dia1 = $dm[0];
		$this->ano2 = $dp[2];
		$this->mes2 = $dp[1];
		$this->dia2 = $dp[0];
	}
	
	//verifica se as datas passadas no metodo usarDatas são válidas.
	private function validarDatas(){
		if($this->ano1!='' && $this->mes1!='' && $this->dia1!='' && $this->ano2!='' && $this->mes2!='' && $this->dia2!=''){
			return true;
		}else{
			return false;
		}
	}
	
	//acrescenta dias, meses e/ou anos na data.
	function somarTempo($data, $dias, $meses, $anos){
		$data=explode("/", $data);
		$novaData = date("d/m/Y", mktime(0, 0, 0, $data[1] + $meses, $data[0] + $dias, $data[2] + $ano) );
		return $novaData;
	}
	
	//decresce dias, meses e/ou anos na data especificada.
	function subtrairTempo($data, $dias, $meses, $anos){
		$data=explode("/", $data);
		$novaData = date("d/m/Y", mktime(0, 0, 0, $data[1] - $meses, $data[0] - $dias, $data[2] - $ano) );
		return $novaData;
	}
	
	//exibe a diferença de dias entre as duas datas especificadas
	function diferencaDias($data1, $data2){
		$this->usarDatas($data1, $data2);
		$preenchido=$this->validarDatas();
		if($preenchido){
		$this->timestamp1 = mktime(0,0,0,$this->mes1,$this->dia1,$this->ano1);
		$this->timestamp2 = mktime(0,0,0,$this->mes2,$this->dia2,$this->ano2);
		$segundos_diferenca = $this->timestamp1 - $this->timestamp2;
		$dias_diferenca = ceil($segundos_diferenca / 86400);
		return $dias_diferenca;
		}else{
			return 'Ocorreu um problema ao recuperar as datas.';
		}
	}
	
	//exibe a diferença de meses entre as duas datas especificadas
	function diferencaMeses($data1, $data2){
		$dias=$this->diferencaDias($data1, $data2);
		$meses_diferenca=floor(($dias/30));
		return $meses_diferenca;
	}
}
?>